#ifndef _FNT_OPTIONS_H_
#define _FNT_OPTIONS_H_

#include <QHash>
#include <array>
class QStringList;

class Options {
	bool changed;
	QHash<QString, QString> data;
	public:
	Options();
	~Options();
	void reset();

	bool isChanged() const;
	void putLine(const QString& l);
	QStringList getLines() const;
	void removeKey(const QString& key);

	bool getXform(const QString& key, std::array<double, 9>* x, std::array<double, 3>* p0) const;
	void setXform(const QString& key, const std::array<double, 9>& x, const std::array<double, 3>& p0);
	bool getXyz(const QString& key, double* x, double* y, double* z) const;
	void setXyz(const QString& key, double x, double y, double z);
	bool getXyzInt(const QString& key, int* x, int* y, int* z) const;
	void setXyzInt(const QString& key, int x, int y, int z);
	bool getInt(const QString& key, int* v) const;
	void setInt(const QString& key, int v);
	bool getDouble(const QString& key, double* v) const;
	void setDouble(const QString& key, double v);
	const QString getString(const QString& key) const;
	void setString(const QString& key, const QString& v);
	const QStringList getStringList(const QString& key) const;
	void setStringList(const QString& key, const QStringList& v);
	const QList<int> getIntList(const QString& key) const;
	void setIntList(const QString& key, const QList<int>& v);
	bool getXfunc(const QString& key, double* x, double* y) const;
	void setXfunc(const QString& key, double x, double y);
};

#endif
